package com.wanxi.coupon.api.feign;

import com.wanxi.coupon.api.query.*;
import com.wanxi.coupon.api.result.CommonResult;
import com.wanxi.coupon.api.vo.*;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.cloud.openfeign.SpringQueryMap;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * ClassName: CouponFeignClient
 * Description: @SpringQueryMap
 * date: 2022/1/5 17:13
 *
 * @author lxl
 * @version 1.0
 * @since JDK 1.8
 */
@FeignClient(value = "coupons-server")
public interface CouponFeignClient {

    /**
     * @Author lxl
     * @Description // 管理员根据给定参数查询对应的优惠券信息接口
     * @Date  2021/12/31 10:55
     * @Params  * @param CouponAdminQuery
     * @return CommonResult
     **/

    @GetMapping("/admin/findAll")
    CommonResult adminFindAll(@SpringQueryMap CouponAdminQuery couponAdminQuery);

    /**
     * @Author lxl
     * @Description //管理员根据给定参数查询对应的优惠券统计信息接口
     * @Date  2021/12/31 10:55
     * @Params  * @param CouponAdminStatisticQuery
     * @return CommonResult
     **/

    @GetMapping("/admin/findStatistic")
    CommonResult adminFindStatistic(@SpringQueryMap CouponAdminStatisticQuery couponAdminStatisticQuery) ;

    /**
     * @Author lxl
     * @Description //管理员通过id查询优惠券信息接口
     * @Date  2021/12/31 10:55
     * @Params  * @param id
     * @return CommonResult
     **/
    @GetMapping("/admin/findById")
    CommonResult adminFindById(@RequestParam("id") Long id);

    /**
     * @Author lxl
     * @Description //管理员添加优惠券信息接口
     * @Date  2021/12/31 10:55
     * @Params  * @param CouponAdminTDO
     * @return CommonResult
     **/
    @PostMapping("admin/add")
    CommonResult adminAdd(@RequestBody CouponAdminTDO couponAdminTDO) ;

    /**
     * @Author lxl
     * @Description 管理员删除优惠券信息接口
     * @Date  2021/12/31 10:55
     * @Params  * @param id
     * @return CommonResult
     **/
    @PutMapping("admin/delete")
    CommonResult adminDelete(@RequestParam("id") Integer id);

    /**
     * @Author lxl
     * @Description  管理员查询优惠券条数接口
     * @Date  2021/12/31 10:55
     * @Params  * @param CouponAdminQuery
     * @return CommonResult
     **/
    @GetMapping("/admin/getCount")
    CommonResult adminGetCount(@SpringQueryMap CouponAdminQuery couponAdminQuery);

    /**
     * @Author lxl
     * @Description  商家按条件查询优惠券信息接口
     * @Date  2021/12/31 10:55
     * @Params  * @param CouponEnterpriseQuery
     * @return CommonResult
     **/
    @GetMapping("enterprise/findAll")
     CommonResult enterpriseFindAll(@SpringQueryMap CouponEnterpriseQuery coupon) ;

    /**
     * @Author lxl
     * @Description  商家按条件查询优惠券统计信息接口
     * @Date  2021/12/31 10:55
     * @Params  * @param CouponEnterpriseStatisticQuery
     * @return CommonResult
     **/
    @GetMapping("enterprise/findStatistic")
     CommonResult enterpriseFindStatistic(@SpringQueryMap CouponEnterpriseStatisticQuery coupon);

    /**
     * @Author lxl
     * @Description  商家通过id查询优惠券信息接口
     * @Date  2021/12/31 10:55
     * @Params  * @param id 优惠券id
     * @return CommonResult
     **/
    @GetMapping("enterprise/findById")
     CommonResult enterpriseFindById(@RequestParam("id") Long id);

    /**
     * @Author lxl
     * @Description  商家添加优惠券接口
     * @Date  2021/12/31 10:55
     * @Params  * @param CouponEnterpriseTDO
     * @return CommonResult
     **/
    @PostMapping(value = "enterprise/add")
     CommonResult enterpriseAdd(@RequestBody CouponEnterpriseTDO coupon);

    /**
     * @Author lxl
     * @Description  商家通过id删除优惠券信息接口
     * @Date  2021/12/31 10:55
     * @Params  * @param id
     * @return CommonResult
     **/
    @PutMapping("enterprise/delete")
     CommonResult enterpriseDelete(@RequestParam("id") Integer id);

    /**
     * @Author lxl
     * @Description  商家按条件查询优惠券条数接口
     * @Date  2021/12/31 10:55
     * @Params  * @param CouponEnterpriseQuery
     * @return CommonResult
     **/
    @GetMapping("enterprise/getCount")
     CommonResult enterpriseGetCount( @SpringQueryMap CouponEnterpriseQuery coupon);


    /**
     * @Author lxl
     * @Description  用户按条件查询优惠券信息接口
     * @Date  2021/12/31 10:55
     * @Params  * @param CouponUserQuery
     * @return CommonResult
     **/
    @GetMapping("user/findAll")
     CommonResult<List<CouponUserVo>> userFindAll(@SpringQueryMap CouponUserQuery coupon );

    /**
     * @Author lxl
     * @Description  用户通过id查询优惠券信息接口
     * @Date  2021/12/31 10:55
     * @Params  * @param id
     * @return CommonResult
     **/
    @GetMapping("user/findById")
     CommonResult<List<CouponUserVo>> userFindById(@RequestParam("id") Long id);

    /**
     * @Author lxl
     * @Description  用户领取优惠券信息接口
     * @Date  2021/12/31 10:55
     * @Params  * @param CouponUserTDO
     * @return CommonResult
     **/
    @PostMapping("user/add")
     CommonResult userAdd(@RequestBody CouponUserTDO coupon);

    /**
     * @Author lxl
     * @Description  用户使用
     * @Date  2021/12/31 10:55
     * @Params  * @param couponUserTDO
     * @return CommonResult
     **/
    @PostMapping("user/useCoupon")
     CommonResult useCoupon(@RequestBody CouponUserTDO couponUserTDO);


    @GetMapping("user/findIsUse")
    CommonResult findIsUse(@SpringQueryMap CouponIsUseQuery query);

}
